个人项目总结 | 日常
【那些年我们一起踩过的坑】
- 主要是在项目中遇到的问题以及简单的解决方法做个记录
【上线前】
近期在做一个金融理财的app,期间遇到了不少小问题,很多测试时候看似不存在的情况,到了实际生产环境中就出现 ( 很蓝受 )
1.金融类产品对于金额比较敏感(由于之前没接触关于金融理财的app所以 很惨),切记一点!不要使用 double 以及 float 类型进行计算,比较,因为这两个精度会出现极小极小的误差,导致在比较大小等情况时候出现失败等不应该出现的情况
解决方法:
- 建议使用NSDecimalNumber 该类型计算
- 当然也可以利用 .2f 的四舍五入机制避免这极小误差导致的问题
贴一段NSDecimalNumber介绍:顾名思义这是一个十进制数字类,继承自NSNumber,苹果针对浮点类型计算精度问题提供出来的计算类,基于十进制的科学计数法来计算,同时可以指定舍入模式,一般用于货币计算。
2.开发期间apple大大发布了iphoneX ,iphone8 以及 iphone8P 这几个机型,其中8和8p的屏幕大小和7保持的一直,比较麻烦的是X这个机型 ( 啥子哟,怎么会有这么奇怪的界面 ) 比较特殊 大致样子是这样的:
其中主要存在的问题:1.流海的高度 2.底部bar的高度 ,3.需要使用到用户touchID 解锁付款等操作的(因为类似支付宝微信用到指纹解锁 付款等 )在iphoneX上使用的faceID 脸部识别进行解锁
大多数需要关注的问题是:1.流海的高度,2.底部tabbar高度
- 自定义导航栏 自由控制导航栏的高度 在适配时候可以判断是否IphoneX来调整高度(类似这样的宏定义 ([[UIApplication sharedApplication] statusBarFrame].size.height>20?44:0) )
- ([[UIApplication sharedApplication] statusBarFrame].size.height>20?83:49)
3.期间发布了ios 11 版本 碰到个奇怪的问题 tableView 等有scrollView的view的内容都下移了 (哦嚯~)
原因是在iOS 11中Apple干掉了ViewController中的automaticallyAdjustsScrollViewInsets这个属性,当tableview的frame超出了安全区域后系统会自动的调整SafeAreaInsets的值,而iOS 11中真正影响tableview内容与边缘的变成了adjustedContentInset而不是以前的contentInset。由于系统对adjustedContentInset进行了调整导致了tableView的内容到边缘的距离发生了变化,下移距离分别是20pt(没有navigationBar,下移了一个statusBar的高度),64pt(navigationBar的高度以及statusBar的高度)。[抄一段文字嘿嘿嘿]
解决方法:
- 去掉contentInset 因为在iOS 11中系统已经默认对scrollview的显示做了处理只要其超过安全区域,它的内容显示都会在view上正常显示,所以就不需要设置contentInset,避免发生偏移。
- 设置contentInsetAdjustmentBehavior 在不改变contentInset的情况下通过增加安全区域的范围来抵消掉SafeAreaInset的值,如果SafeAreaInset值为(20,0,0,0),那么设置additionalSafeAreaInsets属性值为(-20,0,0,0),则SafeAreaInsets不会对adjustedContentInset值产生影响
- 把tableview的frame控制在安全区域内且不设置contentInset
这里贴一个链接https://github.com/2877025939/iOS11 别人整理的关于ios 11和iphoneX适配的
【其他】
递归必须有一个明确的结束条件,不然回想上面例2一样出现无限循环
每一次执行应当更加接近我们的结束条件
深层次的递归可能导致栈溢出
暂时就想到这么多~至于代码,这样的代码搜索引擎更加专业~等有空在写下具体代码